6.1.2 -
Les systèmes d’exploitation
Unix :
L’environnement UNIX, inventé au début des
années 1970 propose deux types d’accès :
- les accès racine (utilisateur
« root ») ;
- les autres accès.
L’ensemble des
vulnérabilités de l’environnement UNIX vise à
s’approprier les droits de l’utilisateur racine, celui-ci
étant le seul utilisateur disposant des droits complets sur le
système de fichiers.
Ces vulnérabilités peuvent
être classées en trois grandes catégories :
- les vulnérabilités accessibles via un accès à
distance ;
- les vulnérabilités accessibles via un accès
local ;
- les vulnérabilités permettant la modification du
système une fois les autorisations racines obtenues.
6.1.2.A - Les vulnérabilités
accessibles via un accès à distance :
Il existe trois méthodes permettant de contourner à distance
les protections de sécurité d’un système
UNIX :
- l’attaque d’un service en veille ;
- le transit par un système UNIX assurant la sécurité
entre plusieurs réseaux : dans la plupart des situations les pirates
ne pénètrent pas littéralement par le mur pare-feu mais
s’en servent comme d’un routeur ;
- le lancement des attaques à distances via une action de
l’utilisateur local (chevaux de Troie, site Web hostile...).
6.1.2.A.1 - Attaque par force
brute :
La forme d’attaque la plus élémentaire d’un
service en veille est la tentative de détection des mots de passe par
force brute. Les types de services les plus courants que l’on peut percer
par une méthode force brute sont :
- telnet ;
- les protocoles de transfert de fichiers ;
- les commandes d’exécution de commandes à distance (rsh,
rlogin ...) ;
- la commande ssh permettant l’exécution d’un environnement
de travail à distance de manière
sécurisée ;
- les protocoles applicatifs (POP, HTTP, SMTP...).
6.1.2.A.2 - Vulnérabilités du
serveur X :
Les systèmes de type Unix utilisent un système de
fenêtrage basé sur X11. Celui-ci possède un important aspect
réseau. Il utilise pour cela le protocole TCP et le port 6000 pour le
premier serveur d’une machine. En effet, il s’agit de pouvoir
fournir un système de fenêtrage à distance pour le client,
ce qui a comme effet désastreux de fournir à l’utilisateur
une main-mise complète sur toutes les possibilités
graphiques.
Ceci fait donc des serveurs X11 des cibles appréciables
pour un agresseur, celui-ci pouvant alors faire des copies de
l’écran de l’utilisateur, mais également lire les
frappes de touches, fournissant ainsi les mots de passes, ou bien injecter des
séquences de touches, comme lors d’une utilisation
classique.
Les mécanismes de sécurité qui existent pour
le système X11 se sont révélés, par la pratique,
être trop faibles ou trop compliqués à utiliser. C’est
le cas du mécanisme du « magic cookie », ou encore du
mécanisme xhosts :
- Le « magic cookie » se base sur un secret partagé entre le
client légitime et le serveur. Le serveur n’accepte un client que
si celui-ci prouve qu’il connaît le secret. Le problème
provient de la transmission de ce secret, qui peut être capté par
un tiers espionnant le réseau.
- Le mécanisme xhosts va fournir au serveur un ensemble
d’adresses IP qui seront dûment autorisées à se
connecter. Malheureusement, ce mécanisme a le défaut
d’être exigeant envers l’utilisateur et peu
d’utilisateurs activent un tel mécanisme.
6.1.2.A.3 - Vulnérabilité du service
d’impression : Lpr
Les systèmes d’impressions Unix (qu’il s’agisse de
lp ou de lpr), permettent à une machine d’imprimer sur une
imprimante qui ne lui est pas directement reliée, mais qui est
connectée à un autre ordinateur.
Le protocole lpr,
créé par l’équipe du système Unix BSD, est
similaire aux commandes ‘r’ de ce système (rlogin, rsh,
etc.), et en possède donc les vulnérabilités et les
faiblesses.
Le protocole lp ne possède pas réellement de
système d’impression à distance, mais va soit passer la
tache d’impression à lpr, soit utiliser rsh.
A cause de cela, de
nombreux protocoles d’impression à distance ont été
implantés par différents fournisseurs Unix, ainsi que pour les
plates-formes non Unix. Mais ces protocoles sont, dans le meilleur des cas,
aussi peu sûrs que celui utilisé par lpr.
Pour compliquer le
tout, les imprimantes PostScript récentes sont de véritables
périphériques Ethernet intelligents, sur lesquels il y a
déjà eu des attaques de dénis de services (attaques DOS).
Certaines de ces attaques ont été activées par une fonction
de sécurité de PostScript.
6.1.2.A.4 - Telnet inversé et canaux
retour :
Une des vulnérabilités la plus difficile à
détecter sur un système d’exploitation UNIX consiste en
l’établissement d’un canal retour. Un canal retour est
défini comme un mécanisme dans lequel le canal de communication
part du système cible et non du système assaillant.
Une des
méthodes pour établir un canal de retour est l’exploitation
du logiciel Telnet présent sur la quasi-totalité des stations
Unix. Le mécanisme est résumé dans le schéma
ci-dessous :
Figure 13 : Le mécanisme
de l'établissement d'un canal de retour
Le principe du mécanisme est le suivant :
- la station de travail cible se connecte sur la machine de l’assaillant
sur un port d’apparence inoffensive (ex : le port Web) :
c’est la que l’assaillant entre ses commandes ;
- conformément aux mécanismes classiques d’entrée
sortie UNIX ces commandes sont renvoyées vers l’interpréteur
de commandes sh ;
- les résultats sont ensuite redirigés vers la machine de
l’assaillant sur un autre port d’apparence inoffensive (ex : le
port de messagerie).
6.1.2.A.5 - Les services RPC :
Le mécanisme de RPC (Remote Procedure Call) est un mécanisme
permettant à un processus d’exécuter du code sur un
ordinateur distant.
Inventé par SUN MicroSystems, le mécanisme
de RPC est basé sur l’enregistrement des services RPC sur le
« mappeur de port » (PORTMAP) au démarrage de la
station de travail. Il appartient à l’utilisateur distant
d’interroger le mappeur de port en vue de connaître le port auquel
ce service est connecté. L’utilisation d’un scanneur de
ports RPC, le fait que de nombreux services RPC soient extrêmement
complexes et nécessitent des droits d’accès racine et
l’exploitation d’une vulnérabilité par
débordement de tampon par exemple font de ces mécanismes des
sources importantes de failles de sécurité.
6.1.2.B - Les vulnérabilités
accessibles via un accès local :
L’utilisation d’une des failles décrites dans le
paragraphe précédent permet un accès local à la
station UNIX. L’utilisation d’un des nombreux logiciels de
décryptage de mots de passe (Crack5, John of the Ripper ...) permet
d’obtenir les mêmes résultats que ceux décrits pour
une station de travail Windows NT.
6.1.2.C - Les vulnérabilités
permettant la modification du système :
S’il apparaît vraisemblable que le système
d’exploitation UNIX est relativement difficile à percer, ce
système d’exploitation permet, une fois l’accès racine
effectué, l’installation d’un cheval de Troie sur quasiment
toutes les commandes du système. Un cheval de Troie classiquement
utilisé est une version modifiée du programme gérant la
connexion des utilisateurs au système. Chaque couple nom/mot de passe
inscrit est ainsi stocké en vue d’une réutilisation
ultérieure !!!
Il existe un deuxième type de
vulnérabilités permettant la modification du noyau : les
noyaux des systèmes d’exploitation Unix récents permettent
le chargement dynamique de modules modifiant leurs comportements. Ces modules
nommés LKM (Loadable Kernel Module) permettent de manipuler
complètement le système sans que l’utilisateur puisse
même détecter leur présence. Un des modules les plus connus
est le module « knark » (cf. webographie).
Il est
à noter que l’effacement des traces d’effraction d’un
système Unix est une chose particulièrement aisée. En effet
le format des enregistrements de trace sous un environnement Unix est un format
texte lisible et donc particulièrement facile à
modifier.